package com.abcd.toast

import android.widget.Toast
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContextBaseJavaModule
import com.facebook.react.bridge.ReactMethod
import com.facebook.react.module.annotations.ReactModule

/**
 * 自定义步骤：
 *      1. 继承ReactContextBaseJavaModule
 *      2. 实现getName()方法，
 *      3. 使用ReactModule注解模块
 *      4. 使用getConstants返回常量
 *      5. 使用ReactMethod注解Js中要调用的方法
 *      6. 注册模块, 创建ToastExampleReactPackage类，并实现ReactPackage接口
 * Created by mazaiting on 2018/6/6.
 */

// 模块名称
@ReactModule(name = "ToastExample")
class ToastModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
    /**
     * 定义外部访问常量，访问方式ToastModule.DURATION_SHORT_KEY
     */
    companion object {
        const val DURATION_SHORT_KEY = "SHORT"
        const val DURATION_LONG_KEY = "LONG"
    }
    /**
     * Js中访问的模块名称
     */
    override fun getName(): String {
        return "ToastExample"
    }

    /**
     * 返回了需要导出给JavaScript使用的常量
     */
    override fun getConstants(): MutableMap<String, Any> {
        val map = HashMap<String, Any>()
        map.put(DURATION_SHORT_KEY, Toast.LENGTH_SHORT)
        map.put(DURATION_LONG_KEY, Toast.LENGTH_LONG)
        return map
    }

    /**
     * 显示吐司方法
     * @param message 消息
     * @param duration 时长
     */
    @ReactMethod // 用于JS中调用
    fun show(message: String, duration: Int) {
        Toast.makeText(reactApplicationContext, message, duration).show()
    }
}
